﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using LPrisaMVC.Entities;
using LPrisaMVC.WebMVC4;
using LPrisaMVC.DAO;
using System.Web.Mvc;

namespace LPrisaMVC.WebMVC4.Tests.Controllers
{
    [TestClass]
    public class ProductoControllerTest 
    {
        [TestMethod]
        public void GetAllFromProducto()
        {
            ProductoDAO proDAO = new ProductoDAO();
            List<PRODUCTO> actual;
            actual = proDAO.GetAllFromProducto();
            Assert.IsTrue(actual.Count > 1);
        }

        [TestMethod]
        public void GetFromProductoById()
        {
            ProductoDAO proDAO = new ProductoDAO();
            int id = 273559;
            PRODUCTO actual;
            actual = proDAO.GetFromProductoById(id);
            Assert.IsTrue(actual.Id == 2739);
        }

        [TestMethod]
        public void GetAllFromProductoByDescripcion()
        {
            ProductoDAO proDAO = new ProductoDAO();
            var criterio = "da";
            List<PRODUCTO> actual;
            actual = proDAO.GetFromProductoByDescripcion(criterio);
            Assert.IsTrue(actual.Count >= 1);
            //Assert.IsNotNull(actual);
        }

        [TestMethod]
        public void AddProducto()
        {
            ProductoDAO proDAO = new ProductoDAO();
            var porcentaje = Convert.ToDecimal("0.5");

            var ListEsperado = (List<PRODUCTO>)proDAO.GetAllFromProducto();
            PRODUCTO producto = new PRODUCTO()
            {
                CategoriaId = 1002,
                Codigo = "NUEVO CODIGO",
                Descripcion = "NUEVO FOLDER",
                Stock = 10,
                Costo = 2,
                Precio = 5,
            };
            proDAO.AddProducto(producto);
            var ListaCTUAL = (List<PRODUCTO>)proDAO.GetAllFromProducto();
            Assert.AreEqual(ListEsperado.Count + 1, ListaCTUAL.Count, "Error ");
        }

        [TestMethod]
        public void UpdateProducto()
        {
            ProductoDAO proDAO = new ProductoDAO();
            var ID = 2739;
            var DESCRIPCION = "FOLDER ACTUALIZADO";
            
            PRODUCTO producto = new PRODUCTO()
            {
                Id = 2739,
                CategoriaId = 1002,
                Codigo = "CODIGO ACTUALIZADO",
                Descripcion = DESCRIPCION,
                Stock = 103,
                Costo = 1,
                Precio = 5,
            };
            proDAO.UpdateProducto(producto);
            var existe = proDAO.GetFromProductoById(ID);
            Assert.IsTrue(existe.Descripcion == DESCRIPCION);
        }

        [TestMethod]
        public void RemoveProducto()
        {
            ProductoDAO proDAO = new ProductoDAO();
            var id = 27449;
            proDAO.RemoveProducto(id);
            var existe = proDAO.GetFromProductoById(id);
            Assert.IsTrue(existe == null);
        }

        [TestMethod]
        public void GetOneProductoByDescripcion()
        {
            ProductoDAO proDAO = new ProductoDAO();
            var criterio = "PAPEL";
            PRODUCTO actual;
            actual = proDAO.GetOneProductoByDescripcion(criterio);
            Assert.IsTrue(actual.Id == 2745);
        }

    }
}
